MySQL SUM |
您所在的位置:网站首页 › sql sum两个字段的值 › MySQL SUM |
摘要:在本教程中,您将学习如何使用 MySQL SUM()函数来计算集合中值的总和。 MySQL SUM()函数简介SUM()函数是一个聚合函数,可让您计算集合中值的总和。 SUM()函数的语法如下: SUM(DISTINCT expression)Code language: SQL (Structured Query Language) (sql)以下是SUM()函数的工作原理: 如果在不返回行的SELECT语句中使用SUM()函数, SUM()函数将返回NULL ,而不是零。 DISTINCT选项指示SUM()函数仅计算集合中不同值的总和。 SUM()函数忽略计算中的NULL值。MySQL SUM()函数图解首先,创建一个名为sum_demo的新表: CREATE TABLE sum_demo ( n INT );Code language: SQL (Structured Query Language) (sql)然后,将一些行插入到sum_demo表中: INSERT INTO sum_demo(n) VALUES(1),(1),(2),(NULL),(3); Code language: SQL (Structured Query Language) (sql)第三,使用SUM()函数计算第n列中的总计值: SELECT SUM(n) FROM sum_demo;Code language: SQL (Structured Query Language) (sql)正如您所看到的, SUM()函数计算 1、1、2 和 3 的总和。并且它忽略 NULL。 最后,使用带有DISTINCT选项的SUM()来计算第n列中的总值: SELECT SUM(DISTINCT n) FROM sum_demo;Code language: SQL (Structured Query Language) (sql)在这种情况下,带有DISTINCT选项的SUM()仅计算不同值 1、2 和 3 的总和。 MySQL SUM()函数示例我们来看看示例数据库中的orderdetails表。 1) 简单的MySQL SUM()函数示例此示例使用SUM()函数获取订单详细信息的商品总数: SELECT SUM(quantityOrdered) SalesQuantity FROM orderdetails;Code language: SQL (Structured Query Language) (sql)2) MySQL SUM()函数及表达式示例以下显示订单号 10110 的订单行项目: SELECT orderNumber, quantityOrdered, priceEach FROM orderdetails WHERE orderNumber = 10100;Code language: SQL (Structured Query Language) (sql)要计算订单号 10110 的总计,请使用SUM()函数,如下所示: SELECT SUM(quantityOrdered * priceEach) orderTotal FROM orderdetails WHERE orderNumber = 10100;Code language: SQL (Structured Query Language) (sql)在本教程中, SUM()函数计算订单号 10110 的所有订单行项目的以下表达式的总和: quantityOrdered * priceEachCode language: SQL (Structured Query Language) (sql)3) MySQL SUM()与GROUP BY子句示例SUM()函数通常与GROUP BY子句一起使用来计算每个组的总和。 例如,您可以使用带有GROUP BY子句的SUM()函数来计算每个订单的总金额,如以下查询所示: SELECT orderNumber, SUM(quantityOrdered * priceEach) orderTotal FROM orderdetails GROUP BY orderNumber ORDER BY orderTotal DESC;Code language: SQL (Structured Query Language) (sql)在这个例子中: GROUP BY子句将订单详细信息分为按订单号分组的组。 SUM()函数计算每个订单的每个金额的总和。4) MySQL SUM()与HAVING子句示例您可以在HAVING子句中使用SUM()函数来过滤组。本例说明如何选择订单金额大于60,000的订单。 SELECT orderNumber, SUM(quantityOrdered * priceEach) orderTotal FROM orderdetails GROUP BY orderNumber HAVING SUM(quantityOrdered * priceEach) > 60000 ORDER BY orderTotal;Code language: SQL (Structured Query Language) (sql)5) MySQL SUM()与NULL示例如果结果集为空, SUM()函数将返回NULL 。有时,您可能希望SUM()函数返回零而不是NULL 。 在这种情况下,您可以使用COALESCE()函数。 COALESCE函数接受两个参数,如果第一个参数为NULL ,则返回第二个参数;否则,它返回第一个参数。 请参阅以下查询: SELECT COALESCE(SUM(quantityOrdered * priceEach), 0) result FROM orderdetails WHERE productCode = 'S1_20';Code language: SQL (Structured Query Language) (sql)6) MySQL SUM()与连接示例请参阅以下orders和orderdetails表: 您可以在带有JOIN子句的SELECT中使用SUM()函数,根据另一个表中的值指定的条件来计算一个表中的值的总和。 此语句使用SUM()函数计算已取消订单的总金额: SELECT SUM(quantityOrdered * priceEach) cancelled_amount FROM orderdetails INNER JOIN orders USING (orderNumber) WHERE status = 'Cancelled';Code language: SQL (Structured Query Language) (sql)7) MySQL SUM IF 示例以下语句使用SUM()函数计算每个订单状态的已售商品数量: SELECT status, SUM(quantityOrdered) FROM orderdetails INNER JOIN orders USING (orderNumber) GROUP BY status; Code language: SQL (Structured Query Language) (sql)如果要将行旋转为列,可以将SUM()函数与CASE表达式结合使用。这是一种SUMIF逻辑: SELECT SUM(CASE WHEN status = 'Shipped' THEN quantityOrdered END) qty_shipped, SUM(CASE WHEN status = 'Resolved' THEN quantityOrdered END) qty_resolved, SUM(CASE WHEN status = 'Cancelled' THEN quantityOrdered END) qty_cancelled, SUM(CASE WHEN status = 'On Hold' THEN quantityOrdered END) qty_on_hold, SUM(CASE WHEN status = 'Disputed' THEN quantityOrdered END) qty_on_disputed, SUM(CASE WHEN status = 'In Process' THEN quantityOrdered END) qty_in_process FROM orderdetails INNER JOIN orders USING (orderNumber); Code language: SQL (Structured Query Language) (sql)在本教程中,您学习了如何使用 MySQL SUM()函数来计算一组值的总和。 本教程有帮助吗? |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |